package com.hb.trade.client.center;

import com.hb.core.pojo.center.sys.dto.ConsoleItemDTO;
import com.hb.core.pojo.center.sys.entity.ConsoleItem;
import com.hb.core.pojo.center.sys.entity.ConsoleItemStatus;
import org.fzzn.core.model.msg.Message;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;

/**
 * 控制台按钮维护接口
 *
 * @author zhaojk
 */
@FeignClient("hb-center")
public interface ConsoleItemClient {

    /**
     * 获取所有操作台按钮
     *
     * @return
     */
    @PostMapping("/consoleItem/itemList")
    Message<List<ConsoleItem>> itemList();

    /**
     * 新增控制台按钮
     *
     * @param item
     * @return
     */
    @PostMapping("/consoleItem/add")
    Message<Boolean> add(ConsoleItem item);

    /**
     * 修改控制台按钮信息
     *
     * @param item
     * @return
     */
    @PostMapping("/consoleItem/update")
    Message<Boolean> update(ConsoleItem item);

    /**
     * 删除控制台按钮
     *
     * @param item
     * @return
     */
    @PostMapping("/consoleItem/delete")
    Message<Boolean> delete(ConsoleItem item);

    /**
     * 拖动控制台按钮以改变层级和位置
     *
     * @param item
     * @return
     */
    @PostMapping("/consoleItem/transferTo")
    Message<Boolean> transferTo(ConsoleItemDTO item);

    /**
     * 获取所有控制台按钮, 带选中状态
     *
     * @param itemStatus
     * @return
     */
    @PostMapping("/consoleItem/itemChecked")
    Message<List<ConsoleItemDTO>> itemChecked(ConsoleItemStatus itemStatus);

    /**
     * 点击按钮时显示该按钮对应的招标方式和角色
     *
     * @param consoleItemId
     * @return
     */
    @PostMapping("/consoleItem/getRoleSignsAndBidWay")
    Message<ConsoleItem> getRoleSignsAndBidWay(@RequestParam("consoleItemId") Long consoleItemId);

    /**
     * 更新标段状态和控制台按钮的关联关系
     *
     * @param item
     * @return
     */
    @PostMapping("/consoleItem/updateRelation")
    Message<Boolean> updateRelation(ConsoleItemDTO item);

    /**
     * 修改指定按钮对应的企业角色和招标方式
     *
     * @param itemId    按钮ID
     * @param roleSigns 角色ID, 逗号分隔的字符串
     * @param bidWays   招标方式
     * @return
     */
    @PostMapping("/consoleItem/updateItemRolesAndBidWays")
    Message<Boolean> updateItemRolesAndBidWays(@RequestParam("itemId") Long itemId,
                                               @RequestParam("roleSigns") String roleSigns,
                                               @RequestParam("bidWays") String bidWays);

    /**
     * 所有控制台按钮, 不过滤, 前端调试用
     *
     * @return
     */
    @PostMapping("/console/items/all")
    Message<List<ConsoleItem>> itemsAll();

    /**
     * 获取指定标段的控制台按钮
     *
     * @param consoleItemDto
     * @return
     */
    @PostMapping("/console/items/sectionId")
    Message<List<ConsoleItemDTO>> itemsSectionId(ConsoleItemDTO consoleItemDto);
}
